package org.xxpay.core.service;

import org.xxpay.core.entity.AgentAccount;
import org.xxpay.core.entity.AgentInfo;
import org.xxpay.core.entity.SettRecord;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author: dingzhiwei
 * @date: 18/04/27
 * @description: 代理商账户接口
 */
public interface IAgentAccountService {

    List<AgentAccount> listAll(int offset, int limit);

    AgentAccount findByAgentId(Long agentId);



    public BigDecimal sumAgentBalance(AgentAccount record);

    BigDecimal sumBalanceByParentAgentId(AgentInfo agentInfo);

    Map agentCountBalance();

    /** 重置今日数据 **/
    void resetTodayAmount();


// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓更改商户账户余额（ 采用事务行锁机制 ） ↓↓↓↓↓↓↓↓

    /** 更新代理商余额和safeKey, 返回数据库最新数据Record **/
    AgentAccount updateBalanceAndSafeKey(AgentAccount updateAccount);

    /** 提现业务 处理完成后 处理账户信息 **/
    void changeBalanceAndInsertHistory(SettRecord settRecord);

    /**  通用业务 变更商户账户信息 **/
    void changeBalanceAndInsertHistory(Long agentId, Long changeAmount, Byte bizType, String bizItem, String orderId, String remark);

    /** 后台调账业务 对通用业务的封装 **/
    void changeBalanceAndInsertHistoryByPlat(Long agentId, Long changeAmount, String remark);

    /** 更新代理商不可用余额 **/
    void onlyChangeUnBalance(Long agentId, Long changeUnBalance);


// ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑






}
